package com.common.core;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.jfinal.core.JFinal;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.StrKit;
import com.oreilly.servlet.multipart.FileRenamePolicy;

/**
 * 上传文件重名策略的使用
 * @author Administrator
 *
 */
public class UpFileRenamePolicy implements FileRenamePolicy {

	 @Override
	    public File rename(File f) {
		 // 用户设置的默认上传目录
	        String saveDir = JFinal.me().getConstants().getBaseUploadPath();
	        
	        if(StrKit.isBlank(saveDir))
	        {
	        	   // 获取webRoot目录
	        	saveDir = PathKit.getWebRootPath()+File.separator+"upload";
	        }
	     
	       
	        // 添加时间作为目录
	        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
	 
	        // /xxx/JFinal2.0-beetl-training/upload/20150710_1436542837568.txt
	        StringBuilder newFileName = new StringBuilder(saveDir)
	            .append(File.separator)
	            .append(dateFormat.format(new Date()))
	            .append("_")
	            .append(System.currentTimeMillis())
	            .append(getFileExt(f.getName()));
	 
	        File dest = new File(newFileName.toString());
	        // 创建上层目录
	        File dir = dest.getParentFile();
	        if (!dir.exists()) {
	            dir.mkdirs();
	        }
	        return dest;
	    }
	 
	    /**
	     * 获取文件后缀
	     * 
	     * @param @param fileName
	     * @param @return 设定文件
	     * @return String 返回类型
	     */
	    public  String getFileExt(String fileName) {
	        return fileName.substring(fileName.lastIndexOf('.'), fileName.length());
	    }

}
